Адміністрація вирішила продати даний сайт. За детальною інформацією звертайтесь за адресою: rozrahu@gmail.com

Вивчення механізму повідомлень ОС Windows

Інформація про навчальний заклад

ВУЗ:
Дніпропетровський національний університет
Інститут:
О
Факультет:
ЗІ
Кафедра:
Не вказано

Інформація про роботу

Рік:
2015
Тип роботи:
Лабораторна робота
Предмет:
Операційні системи

Частина тексту файла

МІНІСТЕРСТВО ОСВІТИ І НАУКИ УКРАЇНИ Дніпропетровський національний університет залізничного транспорту імені академіка В. Лазаряна Лабораторна робота №5 з предмету: «Операційні системи» на тему: «Вивчення механізму повідомлень ОС Windows» Вивчення механізму повідомлень ОС Windows Мета роботи: - вивчити організацію Win32 GUI додатки; - ознайомитися з механізмом повідомлень Windows (види повідомлень, способи і засоби обміну повідомленнями, програми обробки повідомлень, черги повідомлень) - отримати практичні навики програмування передачі і обробки повідомлень; - ознайомитися з особливостями межпроцессной і міжпоточної передачі повідомлень; - отримати практичні навики межпроцессного обміну даними за допомогою апарату повідомлень. Короткі теоретичні відомості Windows використовує для передачі повідомлення окну чергу повідомлень. Кожен потік має свою чергу повідомлень. Потік повинен переглядати свою чергу повідомлень і направляти повідомлення на обробку відповідному вікну. Для цього потік повинен організувати цикл обробки повідомлень, що складається з функцій: while(GetMessage(&msg, NULL, 0, 0)) { TranslateMessage(&msg); DispatchMessage(&msg); } int GetMessage( LPMSG lpMsg, HWND hWnd, UINT wMsgFilterMin, UINT wMsgFilterMax ); Функція витягує повідомлення з черги. Вона приймає наступні параметри: LPMSG lpMsg – покажчик на структуру повідомлення, в яку GetMessage поверне результат. HWND hWnd – описувач вікна, від якого GetMessage прийме повідомлення (NULL означає, що GetMessage приймає повідомлення від всіх вікон, що належать потоку). UINT wMsgFilterMin – найменший ідентифікатор повідомлення, яке прийме GetMessage. UINT wMsgFilterMax – найбільший ідентифікатор повідомлення, яке прийме Getmessage (якщо в значеннях параметрів wMsgFilterMin і wMsgFilterMax передати 0, функція прийматиме ВСІ повідомлення). Функція GetMessage не віддає управління програмі, поки не прийде яке-небудь повідомлення. Якщо повідомлення, що прийшло, – Wm_quit, функція GetMessage поверне 0. Тоді цикл урветься, і програма завершить свою роботу. При будь-якому іншому повідомленні функція GetMessage повертає значення більше нуля, і начинатся виконання тіла циклу. При помилці GetMessage повертає -1. BOOL TranslateMessage( CONST MSG *lpMsg ); Функція переводить повідомлення формату віртуальних клавіш в повідомлення символи. lpMsg - це структура отримана в результаті виклику функцій GetMessage(). Функція поверне значення відмінне від нуля у випадку, якщо переведення вироблене. Якщо повідомлення типа WM_KEYDOWN, WM_KEYUP, WM_SYSKEYDOWN, або WM_SYSKEYUP, то повертане значення завжди відмінне від нуля. Ця функція не змінює структуру MSG, а додає нові повідомлення. LRESULT DispatchMessage( CONST MSG * lpMsg ); Функція пересилає повідомлення віконної процедури. lpmsg - це структура отримана в результаті виклику функцій GetMessage(). Повертане значення є тим, яке поверне віконна процедура. Але зазвичай це значення ігнорується. Для постановки повідомлення в чергу використовується функція PostMessage() або функція SendMessage().Потік, що викликав SendMessage()припиняється до завершення обробки повідомлення. Є два принципово різних способу посилки повідомлень: синхронний (send) і асинхронний (post). Посилаючи повідомлення синхронно, відправник чекає закінчення його обробки, перш ніж продовжити роботу. Асинхронна посилка нагадує опускання листа в поштову скриньку: опустив і забув. Система синхронним способом посилає вікну повідомлення про створення, зміну стану і закриття (наприклад, WM_CREATE, WM_ACTIVATE, WM_SETFOCUS, WM_SETCURSOR, WM_DESTROY) а також багато інших повідомлень. До асинхронних повідомлень відносяться повідомлення від клавіатури і миші, з деякою обмовкою до них можна віднести також WM_PAINT і WM_TIMER. Програма користувача може посилати будь-які повідомлення синхронним або...
Антиботан аватар за замовчуванням

07.05.2015 11:05

Коментарі

Ви не можете залишити коментар. Для цього, будь ласка, увійдіть або зареєструйтесь.

Завантаження файлу

Якщо Ви маєте на своєму комп'ютері файли, пов'язані з навчанням( розрахункові, лабораторні, практичні, контрольні роботи та інше...), і Вам не шкода ними поділитись - то скористайтесь формою для завантаження файлу, попередньо заархівувавши все в архів .rar або .zip розміром до 100мб, і до нього невдовзі отримають доступ студенти всієї України! Ви отримаєте грошову винагороду в кінці місяця, якщо станете одним з трьох переможців!
Стань активним учасником руху antibotan!
Поділись актуальною інформацією,
і отримай привілеї у користуванні архівом! Детальніше

Оголошення від адміністратора

Антиботан аватар за замовчуванням

пропонує роботу

Admin

26.02.2019 12:38

Привіт усім учасникам нашого порталу! Хороші новини - з‘явилась можливість кожному заробити на своїх знаннях та вміннях. Тепер Ви можете продавати свої роботи на сайті заробляючи кошти, рейтинг і довіру користувачів. Потрібно завантажити роботу, вказати ціну і додати один інформативний скріншот з деякими частинами виконаних завдань. Навіть одна якісна і всім необхідна робота може продатися сотні разів. «Головою заробляти» продуктивніше ніж руками! :-)

Новини